草庐IT

c++ - Qt Release build 给出 MSVC++ Runtime Library Error

全部标签

c++ - 在调试中断期间释放资源(C++、MSVC)

是否可以在调试器中停止程序时释放资源(文件锁、计时器)?更一般地说,我可以在MSVC停止程序进行调试之前和恢复执行之后执行代码吗?我想完成的事情:-在调试期间自动释放文件锁定以进行编辑。-进程恢复后自动重新加载文件-防止定时器在调试停止期间触发溢出-从计时器中减去调试花费的时间解决方法:如果我无法在程序被调试器停止之前执行代码,那么在程序中以编程方式检测调试器停止了应用程序已经很有帮助了。编辑:我查看了用于调试器集成的WindowsAPI函数,但似乎ContinueDebugEvent等函数仅适用于调试器的编写者,而不适用于被调试的进程。编辑2:似乎热修补DbgBreakPoint函数

c++ - 在什么情况下为 Qt MinGW 或 MSVC 选择什么编译器?

我从QT开始,使用windows64位我已经安装了MinGW而我没有VS。我应该选择什么版本的QT(MSVS或MinGW),目的是什么?在某些情况下,我必须选择一个而不是另一个吗?我看到MinGW的唯一Qt版本是32位,但是MinGW也支持64位,为什么?假设我想开发一个windows应用程序和一个android应用程序,我是否必须安装两个Qt版本MSVC2015和Qtforandroid? 最佳答案 你最好同时安装它们。用于开发的MinGW版本和用于发布的MSVC版本。因为来自Digia的人,他们构建了Qt版本,除了x64MinG

c++ - 如何将 Qt Creator 配置为用户 MSVC2015?

我已经使用来自官方QT站点的在线Qt安装程序安装了适用于Windows的Qt5.8SDK,支持MSVC2013x64和MSVC2015x64。因为webenginewidgets不支持MinGW编译器。但是我没有在QTCreator的构建环境配置窗口中选择编译器。但我已经安装了很多MSVC,包括MSVC2015_64和MSVC2015_32。我需要在此选项中设置什么才能从QTCreator编译程序? 最佳答案 安装VisualC++构建工具2015,但取消选中安装程序中的任何SDK。从微软网站安装windowsSDK10。安装qt5

C++ 使用 std::get_time 解析 YYMMDD ISO 8601 日期字符串给出意外结果?

我正在尝试解析格式为YYMMDD的日期。作为测试,我尝试了以下代码:#include#include#include#includeintmain(){std::tmt={};std::istringstreamss("191203");ss>>std::get_time(&t,"%y%m%d");if(ss.fail()){std::cout使用Coliru、GCC6.1(C++17)进行测试,输出为:SunMar000:00:001912我期望的是:MonDec300:00:002019格式字符串有问题吗? 最佳答案 你可以使用

c++ - 如何强制 MSVC 编译器省略大型临时对象的堆栈分配?

这个问题不是thisone的重复问题或其他类似问题。这个问题是关于在初始化和使用后清除一个结构。更新在阅读了您的前几条评论后,我想澄清一下我的问题:如何强制MSVC编译器省略大堆栈分配?我更新了标题、文本和下面的代码以阐明这一点。我最近开始使用/GS、/sdl和/analyze编译器选项编译我的项目。(MicrosoftVisualC++2015)使用这些选项,编译器可以正确警告有问题的代码结构。但是,我遇到了一些我一直认为是好的C++风格的警告。请看下面的示例代码:structmy_struct{charlarge_member[64000];};voiddo_something_e

c++ - 缩小转换为 MSVC 中的 bool 警告

编译这段代码时:enumB:bool{T=true};structA{boolmember;};voidfoo(constBb=T){Aa{b};//warninghere}voidbar(){constBb=T;Aa{b};}MSVC在foo中发出警告:warningC4838:conversionfrom'constB'to'bool'requiresanarrowingconversion但是编译bar没问题。这是一个proof这是编译器错误还是预期行为? 最佳答案 narrowingconversion定义的相关部分在C++

c++ - MSVC 无法识别带有模板自动参数的 constexpr 函数

我试图为值列表中的值创建一个索引元查找器。这是代码:#include#includetemplatestructValueTplList;templateconstexprintMetaFindV(intind){//notfoundcasereturn-1;}templateconstexprintMetaFindV(intind=0){ifconstexpr(std::is_same_v){returnNeedleV==V?ind:MetaFindV(ind+1);}else{returnMetaFindV(ind+1);}}//maintemplatestructMetaInde

c++ - MSVC10 中的奇怪编译器错误

我有以下代码:std::for_each(tokens.begin(),tokens.end(),[&](Token&t){staticconststd::unordered_mapmapping([]()->std::unordered_map{//MapsstringstoTokenTypeenumeratedvaluesstd::unordered_mapresult;//RESERVEDWORDresult[L"namespace"]=Wide::Lexer::TokenType::Namespace;result[L"for"]=Wide::Lexer::TokenType:

c++ - 代码在带有警告的 g​​++ 上编译,但在 clang3.1(Xcode 4.3.3) 上给出相同代码的错误

下一行在g++上编译成功,但在clang::上出错static_assert(tBitsg++警告::therearenoargumentsto'static_assert'thatdependonatemplateparameter,soadeclarationof'static_assert'mustbeavailableclang错误::useofundeclaredidentifier'static_assert';didyoumean'static_cast'?请帮帮我。来自评论的函数声明:templateHRESULTDoIO(std::bitset&bitsetToSer

c++ - Valgrind 在空析构函数上给出 "Invalid write of size 8"

我有一个声明:std::map*myMap;进入某个类A。这个映射是在A的构造函数中创建的:myMap=newstd::map;MyClass类基本上是一个结构,用于存储一些带有一些getter/setter的数据。MyClass中没有任何指针或新实例,只有一对枚举值、一个无符号整数和一个bool值。所以MyClass析构函数是空的。另一方面,在A的析构函数中我正在删除映射:A::~A(){if(myMap!=NULL){deletemyMap;myMap=NULL;}}这里Valgrind在删除行上告诉我“地址0x4c389b0是一个大小为48的block内的16个字节free'd[